<?php
class rbacControl extends commonControl {
    function index() {
        $this->display();
    }
	/**
	 * 显示添加用户组
	 */
    function role_add_show() {
        $this->display();
    }
	/**
	 * 用户组显示视图
	 */
    function role_show() {
        $db = M("role");
        $row = $db->where(" isadmin = 1")->all();
        if (!$row) {
            $this->error("后台没有任何组(角色)信息，请先设置", "role_add_show");
        }
        $this->assign("row", $row);
        $this->display();
    }
	/**
	 * 执行添加用户组
	 */
    function role_add_exe() {
        $db = M("role");
        if ($db->add()) {
            $this->success("添加用户组成功");
        } else {
            $this->error("添加失败");
        }
    }
	/**
	 * 执行删除用户组
	 */
    function role_del() {
        $db = M("role");
        if($db->table("user_role")->where(" rid = '".$_GET['rid']."'")->find()){
        	$this->error('不好意思，该用户组下还有用户，不能删除!');
        }
        if ($db->del($_GET['rid'])) {
            $this->success("删除成功");
        } else {
            $this->success("删除失败");
        }
    }
	/**
	 * 添加用户视图
	 */
    function user_add_show() {
        $db = M("role");
        $role = $db->where(" isadmin = 1")->all();
        if (!$role) {
            $this->error("后台没有用户组(角色)，请先添加用户组", "role_add_show");
        }
        $this->assign("role", $role);
        $this->display();
    }
	/**
	 * 添加用户
	 */
    function user_add_exe() {
        $_POST['password']=md5($_POST['password']);
        $_POST['email'] = mt_rand(1, 10000)*mt_rand(1, 10000);
        $_POST['isadmin'] = 1;
        $db = K("rbac_user_add_del_relationModel");
        if($db->add()){
        	$this->success('恭喜添加用户成功!');
        }else{
        	$this->error('可惜，添加用户失败!');
        }
    }
	/**
	 * 查看用户
	 */
    function user_show() {
        $db = k('userHouTairelation');
        $row = $db->field(array("uid", "username",'status'))->findall();
        if (!$row) {
           $this->error("没有用户信息，请先设置", "user_add_show");
        }
        $this->assign("row", $row);
        $this->display();
    }
	/**
	 * 删除用户
	 */
    function user_del() {
    	$uid = isset($_GET['uid'])?$_GET['uid']:false;
    	if($uid === false){
    		$this->error('参数错误，没有传入uid!');
    	}
        $db = K("rbac_user_add_del_relationModel");
        if ($db->del($uid)) {
            $this->success("删除用户成功");
        } else {
            $this->error("删除用户失败");
        }
    }
	/**
	 * 显示所有节点
	 */
    function node_show() {
        $rbac = new rbac();
        $node = $rbac->get_node_list();
        if (!$node) {
            //$this->error("还没有设置权限节点，请设置", 'node_add_show');
        }
        
        $this->assign("node", $node);
        $this->display();
    }
	/**
	 * 节点增加视图
	 */
    function node_add_show() {
        $level = isset($_GET['level']) ? $_GET['level'] : 1;
        switch ($level) {
            case 0:
                $node = array(
                    array('level' => 1, 'name' => '应用'),
                );
                break;
            case 1:
                $node = array(
                    array('level' => 2, 'name' => '模块控制器'),
                );
                break;
            case 2:
                $node = array(
                    array('level' => 3, 'name' => '控制器方法'),
                );
                break;
            default:
                $this->error("操作错误,当前节点已经是控制器方法，不能再添加");
        }
        $this->assign("node", $node);
        $this->display();
    }
    /**
     * 删除节点
     */
    function node_del() {
        $db = M("node");
        $nid = $_GET['nid'];
        if ($db->where("pid=$nid")->find()) {
            $this->error("请先删除子节点");
        }
        if ($db->del($nid)) {
            $this->success('删除成功');
        } else {
            $this->error("删除失败");
        }
    }
	/**
	 * 执行增加节点
	 */
    function node_add_exe() {
        $db = M("node");
        if ($db->add()) {
            $this->success("添加节点成功", 'node_show');
        } else {
            $this->error("节点添加失败");
        }
    }
	/**
	 * 添加权限节点视图
	 */
    function access_add_show() {
        $rid = $_GET['rid'];
        $db = k("role");
        $role = $db->find($rid); //获取当前要操作的角色的id
        $this->assign('role', $role);
        $rbac = new rbac();
        $node = $rbac->get_node_list($rid);
        if (!$node) {
            $this->error("还没有设置权限节点，不能设置权限!", 'node_add_show');
        }
        $this->assign('node', $node);
        $this->display();
    }
	/**
	 * 执行权限添加
	 */
    function access_add_exe() {
    	$rid = $_POST['rid'];
        $db = M("access");
        $db->where("rid='" . $rid."'")->del();
        if (empty($_POST['node'])) {
            $this->success("该用户已经没有任何权限");
        } else {
            foreach ($_POST['node'] as $v) {
                $db->rid = $_POST['rid'];
                $db->nid = $v;
                $db->add($db);
            }
            $this->success("操作成功");
        }
    }
    /**
     * 设置用户组状态
     */
    public function setstatus(){
    	if((isset($_GET['rid']) && !empty($_GET['rid'])) && !isset($_GET['uid'])){
    		$rid = $_GET['rid'];
    		$status = $_GET['status'];
    		$role = M('role');
    		if($role->where(" rid = '".$rid."'")->update(array("status"=>$status))){
    			$this->success('恭喜，更新成功!');
    		}else{
    			$this->error("可惜，更新失败!");
    		}
    	}elseif((isset($_GET['uid']) && !empty($_GET['uid'])) && !isset($_GET['rid'])){
    		$uid = $_GET['uid'];
    		$status = $_GET["status"];
    		$user = M("user");
    		if($user->where(" uid = '".$uid."'")->update(array("status"=>$status))){
    			$this->success('恭喜更新成功!');
    		}else{
    			$this->error("可惜，更新失败了!");
    		}
    	}
    }

}

?>
